Консольный вывод. Функция printf
Основы функции printf()
Функция printf() — главный инструмент для вывода информации на экран в языке Си.
printf(строка_формата, значения);
Простой текстовый вывод
#include <stdio.h>
int main() {
printf("Добро пожаловать в программирование!");
return 0;
}
Управляющие последовательности
Специальные символы для форматирования текста:
- Основные
- Кавычки и слеши
printf("Первая строка\nВторая строка\n");
printf("Имя:\tВозраст\n");
printf("Иван\t25\n");
Результат:
Первая строка
Вторая строка
Имя: Возраст
Иван 25
printf("Книга \"Язык программирования Си\"\n");
printf("Путь: C:\\Program Files\\\n");
printf("Символ \'A\' в кодировке ASCII\n");
Результат:
Книга "Язык программирования Си"
Путь: C:\Program Files\
Символ 'A' в кодировке ASCII
| Последовательность | Описание |
|---|---|
\n | Переход на новую строку |
\t | Табуляция (отступ) |
\" | Двойная кавычка |
\' | Одинарная кавычка |
\\ | Обратный слеш |
\r | Возврат каретки в начало строки |
Спецификаторы формата
Позволяют выводить значения переменных в тексте:
Базовые спецификаторы
| Спецификатор | Тип данных | Пример использования |
|---|---|---|
%d | int | printf("%d", 42); |
%f | float/double | printf("%.2f", 3.14); |
%c | char | printf("%c", 'A'); |
%s | строка | printf("%s", "Текст"); |
%u | unsigned int | printf("%u", 100u); |
Практический пример
#include <stdio.h>
int main() {
int age = 30;
float height = 175.8;
char grade = 'A';
printf("Возраст: %d лет\n", age);
printf("Рост: %.1f см\n", height);
printf("Оценка: %c\n", grade);
return 0;
}
Точность и ширина поля
Контроль дробной части
- Точность
- Ширина поля
- Комбинированное
float pi = 3.141592653;
printf("%.1f\n", pi); // 3.1
printf("%.3f\n", pi); // 3.142
printf("%.6f\n", pi); // 3.141593
int number = 42;
printf("%d\n", number); // 42
printf("%5d\n", number); // 42 (5 символов, выравнивание справа)
printf("%-5d|\n", number); // 42 | (5 символов, выравнивание слева)
float price = 19.9;
printf("%8.2f\n", price); // 19.90 (8 символов, 2 знака после точки)
printf("%-8.2f|\n", price); // 19.90 | (слева + точность)
Дополнительные спецификаторы
| Спецификатор | Назначение | Пример |
|---|---|---|
%e | Экспоненциальная запись | 1.234000e+02 |
%x | Шестнадцатеричное число | ff |
%o | Восьмеричное число | 377 |
%% | Символ процента | % |
int num = 255;
printf("Десятичное: %d\n", num); // 255
printf("Шестнадцатеричное: %x\n", num); // ff
printf("Восьмеричное: %o\n", num); // 377
printf("Проценты: 100%%\n"); // 100%
Флаги форматирования
Основные флаги
- Выравнивание
- Знак числа
- Префиксы
printf("|%10s|\n", "Текст"); // | Текст| (справа)
printf("|%-10s|\n", "Текст"); // |Текст | (слева)
int positive = 42;
int negative = -15;
printf("%+d\n", positive); // +42 (показать знак +)
printf("%+d\n", negative); // -15
printf("% d\n", positive); // 42 (пробел вместо +)
int num = 255;
printf("%#x\n", num); // 0xff (с префиксом 0x)
printf("%#o\n", num); // 0377 (с префиксом 0)
Вывод нескольких значений
#include <stdio.h>
int main() {
char name[] = "Анна";
int age = 28;
float salary = 85000.50;
printf("Сотрудник: %s, возраст: %d лет, зарплата: %.2f руб.\n",
name, age, salary);
// Форматированный вывод таблицы
printf("%-10s %5s %10s\n", "Имя", "Возраст", "Зарплата");
printf("%-10s %5d %10.2f\n", name, age, salary);
return 0;
}
Результат:
Сотрудник: Анна, возраст: 28 лет, зарплата: 85000.50 руб.
Имя Возраст Зарплата
Анна 28 85000.50
Полезные советы
- Количество спецификаторов должно соответствовать количеству аргументов
- Тип спецификатора должен совпадать с типом передаваемой переменной
- Используйте
%.nfдля контроля количества знаков после запятой
Функция printf() — мощный инструмент для создания красиво отформатированного вывода в программах на языке Си.